// fileUtils.js
function getFileBaseName(filepath) {
    // 使用正则表达式来匹配 文件名。这将忽略前面的所有路径分隔符。
    const match = filepath.match(/([^\/\\]+)$/);
    return match ? match[1] : null;
}

function getFileExtension(filename) {
    const match = /\.([^.]*?)(?=\?|#|$)/.exec(filename);
    if (match) {
        return match[1].toLowerCase();
    }
    return null;
}

function getMimeType(filename) {
    const extension = getFileExtension(filename);
    switch (extension) {
        case '.png':
            return 'image/png';
        case '.jpg':
        case '.jpeg':
            return 'image/jpeg';
        case '.gif':
            return 'image/gif';
        case '.bmp':
            return 'image/bmp';
        case '.webp':
            return 'image/webp';
        default:
            return 'application/octet-stream';
    }
}

function getParentPath(path) {
    // 识别路径分隔符是反斜杠还是正斜杠
    const separator = path.includes('\\') ? '\\' : '/';

    // 删除尾部的分隔符
    if (path.endsWith(separator)) {
        path = path.slice(0, -1);
    }

    // 检测根路径（Windows或UNIX风格）
    if (separator === '\\' && /^[a-zA-Z]:\\$/.test(path)) {
        // Windows根路径，如 C:\
        return path;
    } else if (path === '') {
        // UNIX风格根目录 /
        return '/';
    }

    // 截取路径至上一级目录
    const lastIndexOfSeparator = path.lastIndexOf(separator);

    // 如果找到了分隔符，截取路径
    if (lastIndexOfSeparator !== -1) {
        return path.substring(0, lastIndexOfSeparator) || separator;
    }

    // 如果没有找到分隔符，则返回当前目录表征
    return '.';
}

export { getFileBaseName, getFileExtension, getMimeType, getParentPath };
